import java.util.HashMap;
import java.util.Map;

public class 同构字符串 {
    //我开始使用一个哈希表维护, 发现会有两种情况,无法顾及到两种映射情况, 所以使用两种映射
    public boolean isIsomorphic(String s, String t) {
        //判断长度是否相等
        if(s.length() != t.length()){
            return false;
        }
        //两个哈希表维护
        Map<Character,Character> map1 = new HashMap<>();
        Map<Character,Character> map2 = new HashMap<>();
        for(int i = 0;i < s.length();i++){
            char s1 = s.charAt(i);
            char t1 = t.charAt(i);
            //第一个哈希表映射看一下有没有值, 有的话看一下映射是否相同, 是不是一个字符映射两个字符
            if((map1.containsKey(s1) && map1.get(s1) != t1) || (map2.containsKey(t1) && map2.get(t1) != s1)){
                return false;
            }
            map1.put(s1,t1);
            map2.put(t1,s1);
        }
        return true;
    }
}
